package com.itheima.aop;


import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Slf4j
//增强
//@Aspect
//@Component
public class RecordTimeAspect {
//Around:环绕通知（将用户的方法）调用的方法拿到这儿调用）
//    修饰符(可省略) 返回值方法所在的包名.方法所在的类名，方法名（..）
//    (..)表示任意方法
//    *表示任意路径
//    ProceedingJoinPoint pjp 目标对象的信息
    @Around("execution(* com.itheima.service.impl.*.*(..))")
    public Object recordTime(ProceedingJoinPoint pjp) throws Throwable {
        //1）在方法执行前，获取系统时间（目标方法调用前的时间）
        long start=System.currentTimeMillis();
//       /2）执行目标方法（删除员工、新增员工..
        Object result =pjp.proceed();
        //3）获取系统时间，并将当前系统时间-前面开始时间，得到方法执行耗时时间
        long end=System.currentTimeMillis();

        String methodName= pjp.getSignature().getName();
        log.info("{}耗时时间:{}ms",methodName,end-start);

        //4）返回一个object对象
        return result;

    }




}
